package com.joyintech.util;

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;

public class DateUtils {
    // 新增方法：将 LocalDate 转换为字符串
    public static String localDateToString(LocalDate date, String pattern) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        return date.format(formatter);
    }
    /**
     * 取得当天日期是周几
     *
     * @param date 传入日期
     * @return 周几
     */
    public static int getWeekDay(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
        if (day_of_week < 1) {
            day_of_week = 7;
        }
        return day_of_week;
    }

    public static boolean isBeforeSix(LocalTime time, int hour) {
        // 定义6点的时间
        LocalTime sixAM = LocalTime.of(hour, 0);

        // 判断给定时间是否小于6点
        return time.isBefore(sixAM);
    }
    /**
     * 主要功能:计算一个日期加上day天后的日期 date为“yyyy-MM-dd”的形式 注意事项:无
     *
     * @param date 初始日期
     * @param day  天数
     * @return 日期
     */
    public static String addDay(String date, int day) {
        if (date == null) {
            return null;
        }
        LocalDate dateTime = LocalDate.parse(date);
        if (dateTime == null) {
            return null;
        }
        dateTime = dateTime.plusDays(day);
        return dateTime.toString();
    }
    /**
     * 判断日期是否在指定范围内
     *
     * @param date      要判断的日期
     * @param startDate 开始日期（包含）
     * @param endDate   结束日期（包含）
     * @return 如果日期在范围内返回 true，否则返回 false
     */
    public static boolean isDateInRange(LocalDate date, LocalDate startDate, LocalDate endDate) {
        // 判断日期是否在范围内
        return !date.isBefore(startDate) && !date.isAfter(endDate);
    }
    /**
     * 判断对象是否为空
     *
     * @param str 字符串
     * @return boolean
     */
    public static boolean isNotEmptyObj(Object str) {
        boolean flag = true;
        if (str != null && !str.equals("")) {
            if (str.toString().length() > 0) {
                flag = true;
            }
        }
        else {
            flag = false;
        }
        return flag;
    }

    /**
     * 说明：将java.util.Date转为java.time.LocalDate
     *
     * @param date 格式：yyyy-MM-dd
     * @return LocalDate
     */
    public static LocalDate dateToLocalDate(String date) {
        return LocalDate.parse(date);
    }
}
